import { createRouter,createWebHashHistory } from "vue-router";
import routes from  "./routes"
import useTabsStore from "../store/tab-nav";
import useUserStroe from "../store/user"


let  tabsStore:any = undefined
 
let userStore:any = undefined
//创建实例
const router = createRouter({
    // 路由模式
    history:createWebHashHistory(),
    routes,

})


// 全局前置守卫 :将访问历史添加到tabs 标签中
router.beforeEach((to)=>{
//     // to是即将进入的路由标签数据
// console.log("全局前置守卫:",to,111111)
    if (!tabsStore){
        tabsStore = useTabsStore()
    }

    tabsStore.addTob({
        path:to.path,
        title:to.meta?.title ?? "默认标题",
    })
})

// 1.全局前置守卫：拦截页面的访问权限，在用户未登录的情况下，
// 跳转到登录也买你登录成功后才能进行访问
// 2.判断即将进入的目标路由是否在白名单中(白名单中的页面无需登录即可访问)
// 如果即将进入的路由是白名单中的页面，则直接放行进行下一步访问即可
// 如果即将进入的路由不是白名单中的页面，则需要判断用户是否已登录
// 判断用户是否已有登录是根据 store 中保存的用户 token 来处理的
// 有token 则表示已登录，没有token 则表示未登录
// 如果即将进入的路由不是白名单中的页面并且用户未登录，则跳转到登录页面

// 白名单
const whiteList = ["/login"]
 
router.beforeEach(async(to)=>{
    // console.log("userStore:",userStore)
    if(!userStore){
        userStore = useUserStroe()
    }

    // 获取用户登录的 token
    const token = userStore.token

    // 用户登录
    if(token){
        // 判断是否有用户登录的基本信息，没有的话则查询
        const userInfo = userStore.userInfo
        if(!userInfo){
            await userStore.getUserInfoAction()
        }
        // 已登录在访问登陆页面，则直接跳转到主页面
        if(to.path === "/login"){
            return "/dashboard"
        }
    }else{//用户未登录
        // 访问非白名单页面，则跳转到登录页面
        if(!whiteList.includes(to.path)){
            return "/login"
        }


    }

//     // 不在白名单中，则判断是否已登录
//     if(!whiteList.includes(to.path)){
//         // 获取用户登录的token
//         const token = userStore.token
//         // console.log("token:",token)
//         if(!token){
//             return "/login"
//         }
//         // 判断是否有用户基本信息，没有的话则查询保存
//         const userInfo = userStore.userInfo
//         if(!userInfo){
//            userStore.getUserInfoAction() 
//         }
//     }
})

export default router